home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / gfront11.lha / GUIFront / Demos / Source / areas.c next >
C/C++ Source or Header  |  1994-11-01  |  9KB  |  300 lines

  1.  
  2. /* Areas.c - The GUI of the 'Areas' window of Spot
  3.  *
  4.  * This is a GUIFront example GUI. To build an example, compile and link this
  5.  * file with Generic.o (also supplied).
  6.  * Everything prefixed with DEMO_ is exported to Generic.o.
  7.  */
  8.  
  9. #include <libraries/guifront.h>
  10.  
  11. /* First, some Gadget ID's */
  12.  
  13. enum
  14. {
  15.     GID_AREAS,
  16.     GID_ADD,
  17.     GID_DELETE,
  18.     GID_UP,
  19.     GID_DOWN,
  20.     GID_SORT,
  21.     GID_ADDRESS,
  22.     GID_EXPORTTO,
  23.     GID_KEEP,
  24.     GID_KEEPNUM,
  25.     GID_READONLY,
  26.     GID_KEEPTOYOU,
  27.     GID_ALIAS,
  28.     GID_CHARSET,
  29.     GID_WRITE,
  30.     GID_ORIGIN,
  31.     GID_GETORIGIN,
  32.     GID_REPLY,
  33.     GID_GETREPLY,
  34.     GID_SIGNATURE,
  35.     GID_GETSIGNATURE,
  36.     GID_TAGLINES,
  37. };
  38.  
  39. /* Some data and tag items we'll be needing later */
  40.  
  41. extern struct MinList areaslabels;
  42.  
  43. static struct Node areasnodes[] =
  44. {
  45.     {&areasnodes[1], (struct Node *)&areaslabels.mlh_Head, 0, 0, "-!=Spot Beta----------"},
  46.     {&areasnodes[2], &areasnodes[0], 0, 0, "Spot Beta"},
  47.     {&areasnodes[3], &areasnodes[1], 0, 0, "ANet Announce"},
  48.     {&areasnodes[4], &areasnodes[2], 0, 0, "-!=Internet-------------"},
  49.     {&areasnodes[5], &areasnodes[3], 0, 0, "C.S.AMIGA.GRAPHICS"},
  50.     {&areasnodes[6], &areasnodes[4], 0, 0, "C.S.AMIGA.PROGRAMMER"},
  51.     {&areasnodes[7], &areasnodes[5], 0, 0, "C.S.AMIGA.MISC"},
  52.     {&areasnodes[8], &areasnodes[6], 0, 0, "C.S.AMIGA.HARDWARE"},
  53.     {&areasnodes[9], &areasnodes[7], 0, 0, "C.S.AMIGA.ANNOUNCE"},
  54.     {(struct Node *)&areaslabels.mlh_Tail, &areasnodes[8], 0, 0, "C.S.AMIGA.REVIEWS"},
  55. };
  56.  
  57. struct MinList areaslabels =
  58. {
  59.     (struct MinNode *)&areasnodes[0], NULL,(struct MinNode *)&areasnodes[9]
  60. };
  61.  
  62. static GadgetSpec showsel_str =
  63. {
  64.     STRING_KIND, 0,0, {0,0,0,0,NULL,NULL,0,0},NULL,0
  65. };
  66.  
  67. static const struct TagItem areastags[] =
  68. {
  69.     {GTLV_ShowSelected, &showsel_str},
  70.     {GTLV_Labels, &areaslabels},
  71.     {TAG_DONE},
  72. };
  73.  
  74. static const STRPTR addresslabels[] =
  75. {
  76.     "1:111/111.1",
  77.     "2:222/222.2",
  78.     "3:222/222.3",
  79.     "4:444/444.4",
  80.     NULL,
  81. };
  82.  
  83. static const struct TagItem addresstags[] =
  84. {
  85.     {GTCY_Labels, addresslabels},
  86.     {TAG_DONE},
  87. };
  88.  
  89. static const STRPTR keeplabels[] =
  90. {
  91.     "All",
  92.     "Number of days",
  93.     "Number of messages",
  94.     NULL,
  95. };
  96.  
  97. static const struct TagItem keeptags[] =
  98. {
  99.     {GTCY_Labels, keeplabels},
  100.     {TAG_DONE},
  101. };
  102.  
  103. static const STRPTR charsetlabels[] =
  104. {
  105.     "LATIN-1",
  106.     "IBMPC",
  107.     "SWEDISH",
  108.     "ASCII",
  109.     "DEFAULT",
  110.     NULL,
  111. };
  112.  
  113. static const struct TagItem charsettags[] =
  114. {
  115.     {GTCY_Labels, charsetlabels},
  116.     {TAG_DONE},
  117. };
  118.  
  119. static const STRPTR writelabels[] =
  120. {
  121.     "LATIN-1",
  122.     "IBMPC",
  123.     "SWEDISH",
  124.     "ASCII",
  125.     NULL,
  126. };
  127.  
  128. static const struct TagItem writetags[] =
  129. {
  130.     {GTCY_Labels, writelabels},
  131.     {TAG_DONE},
  132. };
  133.  
  134. static const STRPTR taglineslabels[] =
  135. {
  136.     "Off",
  137.     "All",
  138.     "International",
  139.     NULL,
  140. };
  141.  
  142. static const struct TagItem taglinestags[] =
  143. {
  144.     {GTCY_Labels, taglineslabels},
  145.     {TAG_DONE},
  146. };
  147.  
  148. static const struct TagItem getorigintags[] =
  149. {
  150.     {ALT_Image, ALTI_GetMisc},
  151.     {TAG_DONE},
  152. };
  153.  
  154. static const struct TagItem getreplytags[] =
  155. {
  156.     {ALT_Image, ALTI_GetMisc},
  157.     {TAG_DONE},
  158. };
  159.  
  160. static const struct TagItem getsignaturetags[] =
  161. {
  162.     {ALT_Image, ALTI_GetMisc},
  163.     {TAG_DONE},
  164. };
  165.  
  166. static const struct TagItem txtags[] =
  167. {
  168.     {GTTX_Border, TRUE},
  169.     {TAG_DONE},
  170. };
  171.  
  172. /* Now, the GadgetSpec's we'll be needing for this GUI */
  173.  
  174. static GadgetSpec gadgetspecs[] =
  175. {
  176.     {LISTVIEW_KIND,24,7, {0,0,0,0,"Areas",NULL,GID_AREAS,PLACETEXT_LEFT},areastags,GS_DefaultTags},
  177.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Add...", NULL, GID_ADD, PLACETEXT_IN}, NULL, GS_DefaultTags},
  178.     {BUTTON_KIND,   0,0, {0,0,0,0,"D_elete...", NULL, GID_DELETE, PLACETEXT_IN}, NULL, GS_DefaultTags},
  179.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Up", NULL, GID_UP, PLACETEXT_IN}, NULL, GS_DefaultTags},
  180.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Down", NULL, GID_DOWN, PLACETEXT_IN}, NULL, GS_DefaultTags},
  181.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Sort by name", NULL, GID_SORT, PLACETEXT_IN}, NULL, GS_DefaultTags},
  182.     {CYCLE_KIND,    0,0, {0,0,0,0,"Add_ress",NULL,GID_ADDRESS,PLACETEXT_LEFT},addresstags, GS_DefaultTags},
  183.     {STRING_KIND,   0,0, {0,0,0,0,"E_xport to",NULL,GID_EXPORTTO,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  184.     {CYCLE_KIND,    0,0, {0,0,0,0,"_Keep",NULL,GID_KEEP,PLACETEXT_LEFT},keeptags,GS_DefaultTags},
  185.     {INTEGER_KIND,  4,0, {0,0,0,0,NULL,   NULL,GID_KEEPNUM,PLACETEXT_IN},NULL,GS_DefaultTags | GS_NoWidthExtend},
  186.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"Read _only",NULL,GID_READONLY,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  187.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"Kee_p to you",NULL,GID_KEEPTOYOU,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  188.     {STRING_KIND,   0,0, {0,0,0,0,"Al_ias",NULL,GID_ALIAS,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  189.     {CYCLE_KIND,    0,0, {0,0,0,0,"_Charset",NULL,GID_CHARSET,PLACETEXT_LEFT},charsettags,GS_DefaultTags | GS_NoWidthExtend},
  190.     {CYCLE_KIND,    0,0, {0,0,0,0,"_Write",NULL,GID_WRITE,PLACETEXT_LEFT},writetags,GS_DefaultTags | GS_NoWidthExtend},
  191.     {TEXT_KIND,    20,0, {0,0,0,0,"Origi_n",NULL,GID_ORIGIN,PLACETEXT_LEFT},txtags,GS_DefaultTags},
  192.     {GETALT_KIND,   0,0, {0,0,0,0,NULL,NULL,GID_GETORIGIN,PLACETEXT_IN},getorigintags,GS_DefaultTags},
  193.     {TEXT_KIND,     0,0, {0,0,0,0,"Repl_y",NULL,GID_REPLY,PLACETEXT_LEFT},txtags,GS_DefaultTags},
  194.     {GETALT_KIND,   0,0, {0,0,0,0,NULL,NULL,GID_GETREPLY,PLACETEXT_IN},getreplytags,GS_DefaultTags},
  195.     {TEXT_KIND,     0,0, {0,0,0,0,"Signa_ture",NULL,GID_SIGNATURE,PLACETEXT_LEFT},txtags,GS_DefaultTags},
  196.     {GETALT_KIND,   0,0, {0,0,0,0,NULL,NULL,GID_GETSIGNATURE,PLACETEXT_IN},getsignaturetags,GS_DefaultTags},
  197.     {CYCLE_KIND,    0,0, {0,0,0,0,"Tag _Lines",NULL,GID_TAGLINES,PLACETEXT_LEFT},taglinestags,GS_DefaultTags},
  198. };
  199.  
  200. /* Now, we group all of these GadgetSpecs into an array of pointers, so the
  201.  * layout engine can locate gadgets merely by their Gadget IDs.
  202.  */
  203.  
  204. GadgetSpec *DEMO_GadgetSpecList[] =
  205. {
  206.     &gadgetspecs[0], &gadgetspecs[1], &gadgetspecs[2], &gadgetspecs[2],
  207.     &gadgetspecs[3], &gadgetspecs[4], &gadgetspecs[5], &gadgetspecs[6],
  208.     &gadgetspecs[7], &gadgetspecs[8], &gadgetspecs[9], &gadgetspecs[10],
  209.     &gadgetspecs[11], &gadgetspecs[12], &gadgetspecs[13], &gadgetspecs[14],
  210.     &gadgetspecs[15], &gadgetspecs[16], &gadgetspecs[17], &gadgetspecs[18], 
  211.     &gadgetspecs[19], &gadgetspecs[20], &gadgetspecs[21], NULL
  212. };
  213.  
  214. /* Finally, the layout tag list itself. This is where most of the work is
  215.  * done. This list completely describes how the above gadgets are arranged
  216.  * in groups in the GUI.
  217.  */
  218.  
  219. ULONG DEMO_LayoutList[] =
  220. {
  221.     GUIL_Flags, GUILF_PropShare,
  222.  
  223.     GUIL_VertGroup, 1,
  224.         GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  225.  
  226.         GUIL_GadgetSpecID, GID_AREAS,
  227.  
  228.         GUIL_VertGroup,0,
  229.         GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  230.             GUIL_HorizGroup,0,
  231.                 GUIL_Flags, GUILF_EqualShare | GUILF_EqualHeight,
  232.                 GUIL_GadgetSpecID, GID_ADD,
  233.                 GUIL_GadgetSpecID, GID_DELETE,
  234.             TAG_DONE,
  235.  
  236.             GUIL_HorizGroup,0,
  237.                 GUIL_Flags, GUILF_EqualShare | GUILF_EqualHeight,
  238.                 GUIL_GadgetSpecID, GID_UP,
  239.                 GUIL_GadgetSpecID, GID_DOWN,
  240.             TAG_DONE,
  241.             GUIL_GadgetSpecID, GID_SORT,
  242.         TAG_DONE,
  243.         GUIL_GadgetSpecID, GID_ADDRESS,
  244.         GUIL_GadgetSpecID, GID_EXPORTTO,
  245.     TAG_DONE,
  246.  
  247.     GUIL_VertGroup, 1,
  248.         GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  249.  
  250.         GUIL_GadgetSpecID, GID_KEEP,
  251.         GUIL_GadgetSpecID, GID_KEEPNUM,
  252.  
  253.         GUIL_GadgetSpecID, GID_READONLY,
  254.         GUIL_GadgetSpecID, GID_KEEPTOYOU,
  255.         GUIL_GadgetSpecID, GID_ALIAS,
  256.         GUIL_GadgetSpecID, GID_CHARSET,
  257.         GUIL_GadgetSpecID, GID_WRITE,
  258.  
  259.         GUIL_HorizGroup,0,
  260.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  261.             GUIL_GadgetSpecID, GID_ORIGIN,
  262.             GUIL_GadgetSpecID, GID_GETORIGIN,
  263.         TAG_DONE,
  264.  
  265.         GUIL_HorizGroup,0,
  266.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  267.             GUIL_GadgetSpecID, GID_REPLY,
  268.             GUIL_GadgetSpecID, GID_GETREPLY,
  269.         TAG_DONE,
  270.  
  271.         GUIL_HorizGroup,0,
  272.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  273.             GUIL_GadgetSpecID, GID_SIGNATURE,
  274.             GUIL_GadgetSpecID, GID_GETSIGNATURE,
  275.         TAG_DONE,
  276.  
  277.         GUIL_GadgetSpecID, GID_TAGLINES,
  278.     TAG_DONE,
  279.  
  280.     TAG_DONE,
  281. };
  282.  
  283. /* Obligatory version tag */
  284.  
  285. static const char ver[] = "$VER: Areas 1.0 " __AMIGADATE__;
  286.  
  287. /* Now, some globals used by Generic.o during the call to GF_CreateGUIA() */
  288.  
  289. int DEMO_InitialOrientation = GUIL_HorizGroup;
  290.  
  291. STRPTR DEMO_WindowTitle = "Spot/Areas GUI";
  292. STRPTR DEMO_AppID       = "Spot.Areas";
  293.  
  294. STRPTR DEMO_Version     = "1.0",
  295.        DEMO_LongDesc    = "Demo program - The 'Areas' GUI of Spot",
  296.        DEMO_Author      = "Michael Berg",
  297.        DEMO_Date        = __AMIGADATE__;
  298.  
  299. BOOL   DEMO_Backfill    = FALSE;
  300.